//package com.light.netty.client.init;
//
//import com.light.netty.client.handler.UdpBusinessClientHandler;
//import io.netty.bootstrap.Bootstrap;
//import io.netty.channel.*;
//import io.netty.channel.nio.NioEventLoopGroup;
//import io.netty.channel.socket.DatagramChannel;
//import io.netty.channel.socket.nio.NioDatagramChannel;
//import io.netty.handler.logging.LogLevel;
//import io.netty.handler.logging.LoggingHandler;
//import io.netty.handler.timeout.IdleStateHandler;
//import org.springframework.stereotype.Component;
//
//import javax.annotation.PostConstruct;
//
///**
// * @author fuhui
// * @Description：
// * @data 2025/3/13 11:10
// */
//@Component
//public class UdpNettyClientInit {
//
//    @PostConstruct
//    public void init() throws Exception {
//        System.out.println("初始化UDP客户端...........");
//        new Thread(() -> {
//            // 1. 初始化线程组
//            EventLoopGroup group = new NioEventLoopGroup();
//
//            try {
//                // 3. 配置 Bootstrap
//                Bootstrap b = new Bootstrap();
//                b.group(group)
//                        .channel(NioDatagramChannel.class) // 使用 NIO 模式-UDP
////                        .option(ChannelOption.SO_BROADCAST, false)// 不广播
////                        .option(ChannelOption.SO_RCVBUF, 10485760) // 设置为 1MB
//                        .handler(new ChannelInitializer<DatagramChannel>() {
//                            @Override
//                            protected void initChannel(DatagramChannel ch) throws Exception {
//                                ChannelPipeline pipeline = ch.pipeline();
//
//                                // 心跳检测（30秒无活动自动断开）
//                                pipeline.addLast(new IdleStateHandler(30, 0, 0));
//
////                                pipeline.addLast(new LengthFieldBasedFrameDecoder(65535, 0, 4, 8, 0));
////                                pipeline.addLast(new LengthFieldPrepender(4));
//                                // 3.4 日志记录
//                                pipeline.addLast(new LoggingHandler(LogLevel.INFO));
//
//                                // 3.5 业务处理器
//                                pipeline.addLast(new UdpBusinessClientHandler("UDP-1"));
////                                pipeline.addLast(new UdpBusinessClientHandler(DatagramPacket.class));
//                            }
//                        });
//
//                // 4. 绑定本地端口（非必须，但建议显式设置）
//                ChannelFuture f = b.bind(0).sync();// 随机端口
//                f.channel().closeFuture().sync();
//            } catch (InterruptedException e) {
//                throw new RuntimeException(e);
//            } finally {
//                // 6. 释放资源
//                group.shutdownGracefully();
//            }
//        }).start();
//
//
//
//
//
//        new Thread(() -> {
//            // 1. 初始化线程组
//            EventLoopGroup group = new NioEventLoopGroup();
//
//            try {
//                // 3. 配置 Bootstrap
//                Bootstrap b = new Bootstrap();
//                b.group(group)
//                        .channel(NioDatagramChannel.class) // 使用 NIO 模式-UDP
////                        .option(ChannelOption.SO_BROADCAST, false)// 不广播
////                        .option(ChannelOption.SO_RCVBUF, 10485760) // 设置为 1MB
//                        .handler(new ChannelInitializer<DatagramChannel>() {
//                            @Override
//                            protected void initChannel(DatagramChannel ch) throws Exception {
//                                ChannelPipeline pipeline = ch.pipeline();
//
//                                // 心跳检测（30秒无活动自动断开）
//                                pipeline.addLast(new IdleStateHandler(30, 0, 0));
//
////                                pipeline.addLast(new LengthFieldBasedFrameDecoder(65535, 0, 4, 8, 0));
////                                pipeline.addLast(new LengthFieldPrepender(4));
//                                // 3.4 日志记录
//                                pipeline.addLast(new LoggingHandler(LogLevel.INFO));
//
//                                // 3.5 业务处理器
//                                pipeline.addLast(new UdpBusinessClientHandler("UDP-2"));
////                                pipeline.addLast(new UdpBusinessClientHandler(DatagramPacket.class));
//                            }
//                        });
//
//                // 4. 绑定本地端口（非必须，但建议显式设置）
//                ChannelFuture f = b.bind(0).sync();// 随机端口
//                f.channel().closeFuture().sync();
//            } catch (InterruptedException e) {
//                throw new RuntimeException(e);
//            } finally {
//                // 6. 释放资源
//                group.shutdownGracefully();
//            }
//        }).start();
//
//    }
//
//}